home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Examples / DatabaseKit / Evaluator / MultiBinder.m < prev    next >
Encoding:
Text File  |  1993-07-21  |  1.5 KB  |  71 lines

  1. /*
  2.  * MultiBinder.m
  3.  * A Binder for fetching multiple results sets from a stored procedure.
  4.  * You may freely copy, distribute, and reuse the code in this example.
  5.  * NeXT disclaims any warranty of any kind, expressed or  implied, as to its
  6.  * fitness for any particular use.
  7.  * Written by Jack Greenfield
  8.  */
  9.  
  10. #import "MultiBinder.h"
  11.  
  12. @implementation MultiBinder
  13.  
  14. - initFromPropertyLists:(List *)propLists
  15. {
  16.     if ((self = [super init]) != nil)
  17.     {
  18.     currentResultSet = 0;
  19.     if (propLists) propListList = [propLists copyFromZone:[self zone]];
  20.     }
  21.  
  22.     return self;
  23. }
  24.  
  25. - (List *)getCurrentProperties:(List *)aList
  26. {
  27.     return [super getProperties:aList];
  28. }
  29.  
  30. - (unsigned int)currentResultSet
  31. {
  32.     return currentResultSet ? currentResultSet - 1 : [propListList count];
  33. }
  34.  
  35. - (List *)getProperties:(List *)aList
  36. {
  37.     if (currentResultSet)
  38.     if ([delegate respondsTo:@selector(binderWillChangeResultSet:)])
  39.         [delegate binderWillChangeResultSet:self];
  40.  
  41.     [aList empty];
  42.     [aList appendList:[propListList objectAt:currentResultSet]];
  43.     [self setProperties:aList];
  44.     currentResultSet++;
  45.     if ([propListList count] && currentResultSet > [propListList count])
  46.         currentResultSet = [propListList count];
  47.     else
  48.     if ([delegate respondsTo:@selector(binderDidChangeResultSet:)])
  49.         [delegate binderDidChangeResultSet:self];
  50.  
  51.     return aList;
  52. }
  53.  
  54. - free
  55. {
  56.     [[propListList freeObjects] free];
  57.     return [super free];
  58. }
  59.  
  60. @end
  61.  
  62. @implementation DBBinder (MultiBinderMethods)
  63.  
  64. - (List *)getCurrentProperties:(List *)aList
  65. {
  66.     return([self getProperties:aList]);
  67. }
  68.  
  69. @end
  70.  
  71.